from enum import Enum

"""
Copy from CSDN 
"""


class BaseEnum(Enum):
    @classmethod
    def containsKey(cls, name):
        """
        判断枚举名称是否存在
        :param name:str 枚举的名称
        :return 有效返回true,否则返回false
        """
        return name in cls._member_map_.keys()

    @classmethod
    def containsValue(cls, value):
        """
        判断枚举值是否有效
        :param value:? 枚举对应的值
        :return 有效返回true,否则返回false
        """
        for k, v in cls._member_map_.items():
            if v.value == value:
                return True
        return False

    @classmethod
    def toValue(cls, name, default=None):
        """
        将枚举名称转换成枚举值
        :param name:str 需要转换的枚举名称
        :param default:? 枚举名不存在时返回的默认值
        :return 成功返回对应的枚举值,失败返回默认值
        """
        if cls.toName(name):
            return cls._member_map_[name].value
        return default

    @classmethod
    def toName(cls, value, default=None):
        """
        将枚举值转换成枚举名
        :param value:? 需要转换的枚举值
        :param default:str 枚举值不存在时返回的默认值
        :return 成功返回对应的枚举名称,失败返回默认枚举名称
        """
        for k, v in cls._member_map_.items():
            if v.value == value:
                return k
        return default


class BaseIntEnum(int, BaseEnum):
    """
    继承int型枚举
    """
